﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Globalization;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;


namespace ProyectoFinal.Clientes
{
    public partial class mantenimientoClientes : System.Web.UI.Page
    {
        ServiceClientes.webServiceClientesSoapClient objWsClientes = new ServiceClientes.webServiceClientesSoapClient();
        ServiceTipoIdentificacion.webServiceTipoIdentificacionSoapClient objWsTipoIdentificacion = new ServiceTipoIdentificacion.webServiceTipoIdentificacionSoapClient();
        ServiceTipoCliente.webServiceTipoClienteSoapClient objWsTipoCliente = new ServiceTipoCliente.webServiceTipoClienteSoapClient();

        #region Eventos
        protected void Page_Load(object sender, EventArgs e)
        {
            
            if (!Page.IsPostBack)
            {
                this.cargarListaClientes();
                this.cargarTiposIdentificacion();
                this.cargarTipoCliente();
            }
            
            
        }
        protected void linkTab_Click(object sender, EventArgs e)
        {
            this.cargarListaClientes();
        }
        protected void cargarTiposIdentificacion()
        {

            try
            {
                DataSet ds = objWsTipoIdentificacion.devolverTipoIdentificacion();

                dd_identificacion.Items.Add("");
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {

                    ListItem item = new ListItem();
                    item.Value = ds.Tables[0].Rows[i]["Codigo_Identificacion"].ToString();
                    item.Text = ds.Tables[0].Rows[i]["Tipo_Identificacion"].ToString();

                    dd_identificacion.Items.Add(item);
                    dd_identificacion.DataBind();

                }
                //edit too
                dd_identificacion_edit.Items.Add("");
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {

                    ListItem item = new ListItem();
                    item.Value = ds.Tables[0].Rows[i]["Codigo_Identificacion"].ToString();
                    item.Text = ds.Tables[0].Rows[i]["Tipo_Identificacion"].ToString();

                    dd_identificacion_edit.Items.Add(item);
                    dd_identificacion_edit.DataBind();

                }
            }
            catch (Exception ex)
            {


            }
        }

        protected void cargarTipoCliente()
        {

            try
            {
                DataSet ds = objWsTipoCliente.devolverTipoCLientes();

                dd_codigo_tipo_cliente.Items.Add("");
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    ListItem item = new ListItem();
                    item.Value = ds.Tables[0].Rows[i]["Codigo_Tipo_Cliente"].ToString();
                    item.Text = ds.Tables[0].Rows[i]["Descripcion"].ToString();

                    dd_codigo_tipo_cliente.Items.Add(item);
                    dd_codigo_tipo_cliente.DataBind();
                }
                //edit too
                dd_codigo_tipo_cliente_edit.Items.Add("");
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    ListItem item = new ListItem();
                    item.Value = ds.Tables[0].Rows[i]["Codigo_Tipo_Cliente"].ToString();
                    item.Text = ds.Tables[0].Rows[i]["Descripcion"].ToString();

                    dd_codigo_tipo_cliente_edit.Items.Add(item);
                    dd_codigo_tipo_cliente_edit.DataBind();
                }

            }
            catch (Exception ex)
            {


            }
        }

        protected void gvClientes_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            GridViewRow row = (GridViewRow)(((LinkButton)e.CommandSource).NamingContainer);
            int fila = Convert.ToInt32(row.RowIndex);
            int codigoCliente = Convert.ToInt32(gvClientes.DataKeys[fila].Value);

            if (e.CommandName == "editar")
            {
                
                this.editarClientes(codigoCliente);
                //muestra form de edicion y oculta grid 
                listadoClientes.Visible = false;
                pEdit.Visible = true;
                //bloquea campos
                //.Enabled = false; txt_Vin_edit.Enabled = false;
            }
            else
            {
                fila = Convert.ToInt32(row.RowIndex);
                codigoCliente = Convert.ToInt32(gvClientes.DataKeys[fila].Value);
                this.eliminarClientes(codigoCliente);
            }
        }
        protected void gvClientes_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gvClientes.PageIndex = e.NewPageIndex;
            this.cargarListaClientes();
        }
        #endregion

        #region Procedimientos
        private void insertarClientes()
        {
            try
            {
                string estado = "";
                //dentro del metodo hacen el pase de los valores que vienen desde la interfaz
                string identificacion = txt_identificacion.Text;
                int codigoId = Convert.ToInt32(dd_identificacion.SelectedValue);
                string nombre = txt_nombre.Text;
                string apellido1 = txt_apellido1.Text;
                string apellido2 = txt_apellido2.Text;
                char genero = Convert.ToChar(dd_genero.SelectedValue);
                string email = txt_email.Text;
                int codigoTipoCliente = Convert.ToInt32(dd_codigo_tipo_cliente.SelectedValue);

              estado = objWsClientes.insertarClientes(identificacion, codigoId, nombre, apellido1, apellido2, genero, email, codigoTipoCliente);

                if (estado == "Placa Registrada")
                {
                    //aqui pueden tirar un msj dependiendo de lo que devuelva el estado
                }
                else if (estado == "VIN Registrado")
                {
                    //aqui pueden tirar un msj dependiendo de lo que devuelva el estado
                }
                else if (estado == "Error")
                {
                    //aqui pueden tirar un msj error si sucediera
                }
                else if (estado == "Insertado")
                {
                    //aqui pueden tirar un msj dependiendo de lo que devuelva el estado en este caso el el
                    //caso exitoso, seria cuando hace insert.
                    //this.limpiarCamposInsert();

                }


            }
            catch (Exception ex)
            {

            }

        
        }
        private void actualizarClientes()
        {
            try
            {
                string estado = "";
                //dentro del metodo hacen el pase de los valores que vienen desde la interfaz
                //estado = objWsClientes.actualizarClientes(txt_identificacion.Text, 0, txt_nombre.Text, txt_apellido1.text, txt_apellido2.text, txt_genero.text, txt_email.text, 0);
                //if (estado == "Error")
                //{
                //    //aqui pueden tirar un msj error si sucediera
                //}
                //else if (estado == "Modificado")
                //{
                //    //aqui pueden tirar un msj dependiendo de lo que devuelva el estado en este caso el el
                //    //caso exitoso, seria cuando hace insert.
                //}


            }
            catch (Exception ex)
            {

            }
        }
        private void eliminarClientes(int codigoCliente)
        {
            try
            {
                string estado = "";
                //dentro del metodo hacen el pase de los valores que vienen desde la interfaz
                estado = objWsClientes.eliminarClientes(codigoCliente);
                if (estado == "Error")
                {
                    //aqui pueden tirar un msj error si sucediera
                }
                else if (estado == "Eliminado")
                {
                    //aqui pueden tirar un msj dependiendo de lo que devuelva el estado en este caso el el
                    //caso exitoso, seria cuando hace insert.
                }


            }
            catch (Exception ex)
            {

            }
        
        }
        private void editarClientes(int codigoCliente)
        {
            try
            {

                DataSet ds = objWsClientes.editarClientes(codigoCliente);
                //cargan los textbox,etc con el dataset voy a hacerlo con variables pero en lugar de estas irian textbox

                txt_identificacion_edit.Text = ds.Tables[0].Rows[0]["Identificacion"].ToString();
                dd_identificacion_edit.SelectedIndex = Convert.ToInt32(ds.Tables[0].Rows[0]["Codigo_Identificacion"]);
                txt_Codigo_Cliente_edit.Text = ds.Tables[0].Rows[0]["Codigo_Cliente"].ToString();
                dd_genero_edit.SelectedIndex = Convert.ToInt32(ds.Tables[0].Rows[0]["Genero"]);
                txt_nombre_edit.Text = ds.Tables[0].Rows[0]["Nombre"].ToString();
                txt_apellido1_edit.Text = ds.Tables[0].Rows[0]["Apellido1"].ToString();
                txt_apellido2_edit.Text = ds.Tables[0].Rows[0]["Apellido2"].ToString();
                txt_email.Text = ds.Tables[0].Rows[0]["Email"].ToString();

            }
            catch (Exception ex)
            {

            }
        }
        private void cargarListaClientes()
        {
                //devuelve lista completa para mostrar registros
                DataSet ds = objWsClientes.devolverClientes();
                gvClientes.DataSource = ds; 
                gvClientes.DataBind();
        }

      
        #endregion

        protected void btn_guardar_Click(object sender, EventArgs e)
        {
            this.insertarClientes();
        }

        protected void btn_limpiar_clientes_Click(object sender, EventArgs e)
        {
            txt_identificacion.Text = "";  txt_nombre.Text = ""; txt_apellido1.Text = ""; txt_apellido2.Text = ""; txt_email.Text = "";
        }

        protected void btn_limpiar_clientes_edit_Click(object sender, EventArgs e)
        {
            txt_identificacion_edit.Text = ""; txt_genero_edit.Text = ""; txt_nombre_edit.Text = ""; txt_apellido1_edit.Text = ""; txt_apellido2_edit.Text = ""; txt_email.Text = "";
        }

        protected void gvClientes_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        protected void btn_guardar_cliente_Click(object sender, EventArgs e)
        {
            this.insertarClientes();
            confirmacionActualizado.Visible = true;
            tab1.Visible = true;
        }
        protected void btn_limpiar_cliente_Click(object sender, EventArgs e)
        {

        }

        protected void btn_guardar_cliente_edit_Click(object sender, EventArgs e)
        {

        }

        protected void btn_limpiar_cliente_edit_Click(object sender, EventArgs e)
        {

        }
    }
}